1

Введение в агентов, решающих задачи

PolyU COMP5511Lecture 2
00:00

От рефлексов к планированию

В эволюции проектирования агентов мы переходим от рефлекторных агентов, которые напрямую сопоставляют восприятия с действиями на основе простых правил (например, «Если впереди идущий автомобиль тормозит, начни торможение»), к агентам, решающим задачи. Рефлекторные агенты действуют в рамках непосредственного контекста, тогда как агенты, решающие задачи, являются целевыми. Они учитывают будущие последствия своих действий, чтобы найти последовательность, удовлетворяющую конкретной цели.

  • Рефлекторный агент: $Action = Function(Percept)$
  • Планирующий агент: $Action\_Sequence = Search(State, Goal)$

Атомарное представление состояния

На этом фундаментальном уровне агенты используют атомарное представление. Это означает, что состояние мира рассматривается как чёрный ящик — единый узел без внутренней структуры, видимой алгоритму поиска. Агент рассуждает только о:

  • Состояния ($S$): Снимки среды.
  • Действия ($A$): Переходы между состояниями.
  • Проверка цели: Логическая проверка условия $s \in S_{goal}$.

Цикл решения задач

Агент, решающий задачи, следует чёткому четырёхэтапному циклу для навигации в среде:

  1. Формулировка цели: Определение того, какую цель преследовать, исходя из текущей ситуации.
  2. Формулировка задачи: Абстрагирование реального мира в математическую модель (состояния и действия).
  3. Поиск: Симуляция последовательностей действий для поиска оптимального пути.
  4. Выполнение: Выполнение действий, найденных на этапе поиска, без дополнительных размышлений (при условии статичной среды).
Реализация на Python (agent_types.py)
1
class ReflexAgent:
2
defact(self, percept):
3
# Direct mapping: Rule -> Action
4
return rules.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__(self):
8
self.seq = [] # Buffered action sequence
9
10
defact(self, percept):
11
# If we are mid-execution, continue
12
ifself.seq:
13
returnself.seq.pop(0)
14
15
# Otherwise, Plan (Search)
16
state = self.update_state(percept)
17
goal = self.formulate_goal(state)
18
problem = self.formulate_problem(state, goal)
19
20
# Search returns a list of actions
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop(0)